package design.patterns.creational.builder.v2;


/**
 * @author gjx
 * @version v1.0
 * @Description
 * @date 2019/3/28 17:21
 */
//建造者模式的结构中还引入了一个指挥者类Director，该类的作用主要有两个：
// 一方面它隔离了客户与生产过程；另一方面它负责控制产品的生成过程
// 指挥者针对抽象建造者编程，客户端只需要知道具体建造者的类型，
// 即可通过指挥者类调用建造者的相关方法，返回一个完整的产品对象。
public class Director {

    private AbstractComputerBuilder computerBuilder;

    //set 方式注入builder对象
    public void setComputerBuilder(AbstractComputerBuilder computerBuilder) {
        this.computerBuilder = computerBuilder;
    }
    //构造方式注入builder对象


    public Director(AbstractComputerBuilder computerBuilder) {
        this.computerBuilder = computerBuilder;
    }


    public Computer getComputer(){
        computerBuilder.buildCpu();
        computerBuilder.buildHardDisk();
        computerBuilder.buildMainBoard();
        computerBuilder.buildMemory();
        return computerBuilder.build();
    }
}
